//
// Created by wujehy on 2020/8/4.
//

#ifndef AUTH_RAFT_DAOBASE_H
#define AUTH_RAFT_DAOBASE_H

enum DataBase_STATUS
{
    SUCCESS = 0,
    FAIL = -1,
    UNKOWN = -2
};

/**
 * @brief 数据库 表级积累
 * @tparam T
 * @tparam DBHander
 */
template<class T, class DBHander>
class DaoBase
{
protected:
    /**
     * @brief 表级模块类型
     */
    enum Type
    {
        DAO_USER = 1,
        DAO_IOT = 2,
    };
public:
    /**
     * @brief 数据库操作管理指针
     */
    DBHander *dbHander = nullptr;
    T *context = nullptr;

    /**
     * @brief 被实现的类的类型
     * @return
     */
    virtual int type() = 0;

    /**
     * @brief 初始化
     * @return
     */
    virtual int init() = 0;

    /**
     * @brief 析钩器
     */
    virtual ~DaoBase()
    {

    }

    /**
     * @brief 统一回调
     */
    virtual void init_finished() = 0;
};

#endif //AUTH_RAFT_DAOBASE_H
